import unittest
import logging

from parameterized import parameterized

import utils
from api.departmentApi import DepApi
from api.loginApi import loginApi

    #定义测试用例类
class TestDep(unittest.TestCase):
    def setUp(self) -> None:
        #实例化登录模块
        self.login_api=loginApi()
        #实例化部门管理
        self.dep_api =DepApi()

        #部门管理(增删改查)
    @parameterized.expand(utils.read_json('dep_case_data'))
    def test01_dep_mang(self,login_json_dict,add_dep_json_dict,update_dep_json_dict,
                        exp_status_code,exp_success,exp_code,exp_message):
        # 测试数据的初始(删除部门
        # sql_str ="delete from bs_user WHERE department_name ='运维部'"
        # sql_res =utils.DBUtil.exe_sql(sql_str)
        # print(sql_res)

        # 获取token信息
        token = self.login_api.get_token(login_json_dict)
        print(token)

        # 1.完成部门添加
        res_add_dep =self.dep_api.add_dep(token,add_dep_json_dict)
        #获取字典类型的响应数据
        res_add_dep_dict=res_add_dep.json()
        print(res_add_dep_dict)
        #提取新增部门id
        add_dep_id = res_add_dep_dict.get("data").get("id")
        print(add_dep_id)
        #公共断言方法
        utils.common_assert(self,res_add_dep,exp_status_code,exp_success,exp_code,exp_message)


        # 2.完成部门添加查询
        res_query_dep = self.dep_api.query_dep(token,add_dep_id)
        #获取字典类型的响应体数据
        res_query_dep_dict=res_query_dep.json()
        print(res_query_dep_dict),
        #公共断言
        utils.common_assert(self,res_add_dep,exp_status_code,exp_success,exp_code,exp_message)
        #断言部门信息是否正确
        self.assertEqual("运维部",res_query_dep_dict.get("data").get("name"))
        self.assertEqual("0015",res_query_dep_dict.get("data").get("code"))



        # 3.完成部门修改
        res_update_dep =self.dep_api.update_dep(token,update_dep_json_dict,add_dep_id)
        # 获取字典类型的响应体数据
        res_update_dep_dict =res_update_dep.json()
        print(res_update_dep_dict)
        # 公共断言
        utils.common_assert(self,res_add_dep,exp_status_code,exp_success,exp_code,exp_message)

        # 4.完成删除部门
        res_del_dep = self.dep_api.del_dep(token,add_dep_id)
        #获取字典类型的响应体数据
        res_del_dep_dict = res_del_dep.json()
        print(res_del_dep_dict)
        #公共断言
        utils.common_assert(self,res_add_dep,exp_status_code,exp_success,exp_code,exp_message)

